home *** CD-ROM | disk | FTP | other *** search
- #ifndef HEADER_IMWIN
- #define HEADER_IMWIN
-
- #include "pic.h"
- #include "screen.h"
- #include "fifo.h"
-
- /* 画像ウィンドウ */
-
- #define IMAGEWIN_TITLE 129
-
- typedef struct _imw {
- struct _imw *next;
- /* 各部品ID */
- int win; /* ウィンドウ部品の */
- int sbar_h;
- int sbar_v;
- // int btn; /* 描画領域用ボタン */
- int erasebtn;
- int titlebar;
- int titlemsg;
- char title[IMAGEWIN_TITLE+1];
- char fname[_MAX_PATH];
- PIC *pic;
- SCRBITMAP bm; // 画面出力用ビットマップ
- int zoom; // 拡大率
- BOOL fBoxRubber;
- FRAME frBoxRubber; // BOXラバーの PIC 領域(x,y,wid,ht)
- BOOL fBoxRubber2;
- FRAME frBoxRubber2; // BOXラバー2
- BOOL fLineRubber;
- LIST* listLineRubber;
- BOOL fLineRubber2;
- LIST* listLineRubber2;
- } IMWIN;
-
- // モジュール初期化
- int imagewin_init(void);
-
- // 生成・消滅
- IMWIN *imagewin_new(int pixelsize,int width, int height);
- void imagewin_destroy(IMWIN *win);
-
- // リンク関連
- IMWIN *imagewin_getfirst(void);
- IMWIN *imagewin_getnext(void);
- void imagewin_link(IMWIN *win);
- void imagewin_unlink(IMWIN *win);
- void imagewin_show(IMWIN *win);
- IMWIN *imagewin_getWinFromPart(int objId);
- // オブジェクトIDからウィンドウを検索する
- IMWIN *imagewin_getCurrentWin(void);
- void imagewin_setCurrentWin(IMWIN *win);
-
- // 座標変換
- void imagewin_getScrFrame(IMWIN *win, FRAME *frPic, FRAME *frBitmap);
- // PIC領域(x,y,wid,ht)から、SCRBITMAP領域(x,y,wid,ht)へと変換
- void imagewin_getDispFrame(IMWIN *win,FRAME* frPic);
- // ウィンドウのユーザー領域を、表示画像の PIC 領域(x,y,wid,ht)に変換
- void imagewin_getPosFromMos(IMWIN *win, POINT *mos, POINT *pos);
- // 画面上のマウス座標から、画像内での位置を得る
- BOOL imagewin_PtInPic(IMWIN* win, POINT* pt);
- // 画面座標 pt がウィンドウ内の画像領域にあるかどうか
-
- // 表示内容更新
- void imagewin_updateBuf(IMWIN *win);
- // PIC内容から、SCRBITMAP全体を再生成する
- void imagewin_updateScr(IMWIN *win);
- // SCRBITMAPの内容を画面に表示。同時にラバー描画も行う
- void imagewin_updateScrPart(IMWIN *win, FRAME *updatefr);
- // PIC領域 updatefr に対応する SCRBITMAP / 画面を更新する
-
- // ラバー制御
- void imagewin_setBoxRubber(IMWIN* win, FRAME *fr);
- // fr : PIC領域(x,y,wid,ht)
- void imagewin_setBoxRubber2(IMWIN* win, FRAME *fr);
- void imagewin_clearBoxRubber(IMWIN* win);
- void imagewin_clearBoxRubber2(IMWIN* win);
- void imagewin_resetLineRubber(IMWIN* win);
- void imagewin_addLineRubber(IMWIN* win,POINT* p1,POINT* p2);
- // p1,p2 : PIC 座標 p2 が NULL のとき、リストの最初の点とむすぶ
- int imagewin_nLineRubber(IMWIN* win);
- void imagewin_clearLineRubber(IMWIN* win);
- void imagewin_resetLineRubber2(IMWIN* win);
- void imagewin_addLineRubber2(IMWIN* win,POINT* p1,POINT* p2);
- // p1,p2 : PIC 座標 p2 が NULL のとき、リストの最初の点とむすぶ
- int imagewin_nLineRubber2(IMWIN* win);
- void imagewin_clearLineRubber2(IMWIN* win);
-
- // リサイズ処理
- int imagewin_resize(IMWIN *win, BOOL fRedraw);
- // 子ウィンドウの再配置
- void imagewin_setZoom(IMWIN *win, int zoom);
- void imagewin_updateTitle(IMWIN *win, BOOL fShow);
- void imagewin_setFileName(IMWIN *win, char *fname, BOOL fShow);
-
- // 画像編集
- void imagewin_storeUndo(IMWIN* win);
- void imagewin_recoverUndo(void);
- void imagewin_copy(IMWIN* srcwin,FRAME* frSrc,
- IMWIN* destwin,POINT *ptDest);
- // frSrc:PIC領域(x,y,wid,ht)
- // ptDest:PIC座標
- void imagewin_copyarea(IMWIN* srcwin,AREA areaSrc,
- IMWIN* destwin,POINT *ptDest);
-
- #define BAR_SIZE 16
-
- #endif HEADER_IMWIN
-